<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        function sendAjax(url) {
            return new Promise((resolve, reject) => {
                let xhr = new XMLHttpRequest()
                xhr.onreadystatechange = () => {
                    if (xhr.readyState == 4) {
                        if (xhr.status == 200) {
                            resolve(xhr.response)
                        }
                    }
                }
                xhr.open('GET', url)
                xhr.send()
            })
        }

        // 怎么样，这种链式调用的方法是不是看上去比一直嵌套的方式简单多了？我们利用前面讲过的promise的then方法链式调用的方式。把这次的sendAjax返回的promise实例给return出去，那么下一层的then方法所返回的promise实例对象的状态和值都由这次的实例决定了。所以这种一直then下去的方式十分直观，也很容易维护。相比于嵌套来说方便了很多。
        sendAjax('http://localhost:9090')
        .then(
            res=>{
                console.log(res);
                return sendAjax('http://localhost:9090')
            },
            err=>{
                console.log(err)
            }
        )
        .then(
            res=>{
                console.log(res);
                return sendAjax('http://localhost:9090')
            },
            err=>{
                console.log(err)
            }
        )
        .then(
            res=>{
                console.log(res);
                return sendAjax('http://localhost:9090')
            },
            err=>{
                console.log(err)
            }
        )
    </script>
</body>

</html>